package com.wtpaint.leetcode.subject;


import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class IsPalindrome {

    /**
     * 125 验证回文串
     * <p>
     * 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
     * <p>
     * 说明：本题中，我们将空字符串定义为有效的回文串。
     * <p>
     * 示例 1:
     * <p>
     * 输入: "A man, a plan, a canal: Panama"
     * 输出: true
     * <p>
     * 示例 2:
     * <p>
     * 输入: "race a car"
     * 输出: false
     * <p>
     * 2、英文字母:[a-zA-Z]
     * <p>
     * 3、数字:[0-9]
     */

    public static boolean isPalindrome(String s) {
        if ("".equals(s)) {
            return true;
        }
        Pattern p = Pattern.compile("[^(a-zA-z0-9)]");
        Matcher m = p.matcher(s);
        System.out.println("  " + m.replaceAll("").trim());
        char[] tempCharArray = m.replaceAll("").trim().toLowerCase().toCharArray();

        int i = 0, j = tempCharArray.length - 1;

        while (i <= j) {
            if (tempCharArray[i] != tempCharArray[j]) {
                return false;
            }
            i++;
            j--;
        }

        return true;
    }

    public static void main(String[] args) {
        System.out.println("  " + isPalindrome("`l;`` 1o1 ??;l`"));
    }
}
